package jk.rule.core;

/**
 * @author cuichao
 * 规则定义接口
 */
public interface Rule<Fact> {
    /**
     * 获取规则名称
     * @return
     */
    String getName();
    /**
     * 是否普配该规则
     * @return
     */
    boolean match();
    /**
     * 规则处理
     * @param context
     */
    void processor(RuleContext context);
    /**
     * 顺序优先级由大到小
     * @return
     */
    default int getSalience(){
        return 0;
    }
    /**
     * 重新触发规则时，是否还执行该规则
     * @return
     */
    default boolean getNoLoop(){
        return true;
    }
}
